package com.module.ad.toutiao;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;

import com.bytedance.sdk.openadsdk.AdSlot;
import com.bytedance.sdk.openadsdk.TTAdConstant;
import com.bytedance.sdk.openadsdk.TTAdNative;
import com.bytedance.sdk.openadsdk.TTAdSdk;
import com.bytedance.sdk.openadsdk.TTRewardVideoAd;
import com.module.privacy.module_ad.LogADUtils;
import com.module.privacy.module_ad.VideoAdListener;

/**
 * @author bsnl_yanxuwen
 * @date 2021/7/9 11:07
 * Description :
 * 激励视频
 */
public class TTVideoAd {

    private static final String TAG = "头条广告";
    private Handler handler = new Handler();

    private VideoAdListener listener;

    public static void loadVideoAd(Activity context, String posId, String userId, VideoAdListener listener) {
        new TTVideoAd().load(context, posId, userId, listener);
    }


    public void load(Activity context, String posId, String userId, VideoAdListener listener) {
        this.listener = listener;
        TTAdNative mTTAdNative = TTAdSdk.getAdManager().createAdNative(context);

        AdSlot adSlot = new AdSlot.Builder()
                .setCodeId(posId)
//                .setRewardName("金币") //奖励的名称 选填
//                .setRewardAmount(1)  //奖励的数量 选填
                .setUserID(userId)//tag_id
                .setMediaExtra("media_extra") //附加参数
                .setOrientation(TTAdConstant.VERTICAL) //必填参数，期望视频的播放方向：TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL
                .build();
        mTTAdNative.loadRewardVideoAd(adSlot, new TTAdNative.RewardVideoAdListener() {

            @Override
            public void onError(int i, String s) {
                LogADUtils.d(TAG, "头条激励广告：" + s);
            }

            //视频广告的素材加载完毕，比如视频url等，在此回调后，可以播放在线视频，网络不好可能出现加载缓冲，影响体验。
            @Override
            public void onRewardVideoAdLoad(TTRewardVideoAd ttRewardVideoAd) {
                ttRewardVideoAd.showRewardVideoAd(context, TTAdConstant.RitScenes.CUSTOMIZE_SCENES, "scenes_test");
                ttRewardVideoAd.setRewardAdInteractionListener(adListener);
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        if (listener != null) {
                            listener.onStart();
                        }
                    }
                }, 1000);

            }

            //视频广告加载后，视频资源缓存到本地的回调，在此回调后，播放本地视频，流畅不阻塞。
            @Override
            public void onRewardVideoCached() {

            }

            //广告视频本地加载完成的回调，可以在这个回调后直接播放本地视频，直接使用参数对象来播放
            @Override
            public void onRewardVideoCached(TTRewardVideoAd ttRewardVideoAd) {

            }
        });

    }

    TTRewardVideoAd.RewardAdInteractionListener adListener = new TTRewardVideoAd.RewardAdInteractionListener() {
        //广告的下载bar点击回调
        @Override
        public void onAdVideoBarClick() {

        }

        //视频广告关闭回调
        @Override
        public void onAdClose() {

        }

        //视频播放完成回调
        @Override
        public void onVideoComplete() {
            LogADUtils.d(TAG, "头条激励视频播放完成");
        }

        //视频广告播放错误回调
        @Override
        public void onVideoError() {
            LogADUtils.d(TAG, "头条激励视频播放错误");
        }

        //视频播放完成后，奖励验证回调，rewardVerify：是否有效，rewardAmount：奖励梳理，rewardName：奖励名称，code：错误码，msg：错误信息
        @Override
        public void onRewardVerify(boolean rewardVerify, int rewardAmount, String rewardName, int code, String msg) {
            LogADUtils.d(TAG, "头条激励视频奖励回调" + rewardVerify);
            if (listener != null) {
                listener.onComplete();
            }
            handler.removeCallbacksAndMessages(null);

        }

        /**
         * 激励视频播放完毕，验证是否有效发放奖励的回调 4400版本新增
         *
         * @param isRewardValid 奖励有效
         * @param rewardType 奖励类型，0:基础奖励 >0:进阶奖励
         * @param extraInfo 奖励的额外参数
         */
        @Override
        public void onRewardArrived(boolean isRewardValid, int rewardType, Bundle extraInfo) {

        }

        //视频广告跳过回调
        @Override
        public void onSkippedVideo() {

        }

        //视频广告展示回调
        @Override
        public void onAdShow() {
            LogADUtils.d(TAG, "头条激励视频奖励显示");
        }
    };
}
